Stochastic processing is an alternative to conventional digital or analog processing for performing primitive data processing operations. In a stochastic processing system, each operand is represented by a binary value sequence, i.e., a sequence of 1's and 0's. Conversion of an operand into stochastic form can be performed by first scaling the operand such that it lies in the range between 0 and 1, and by then converting the operand into a sequence of binary values (1's and 0's) such that in a given sequence of sufficient length, the ratio of the number of 1 values in the sequence to the total number of values in the sequence is equal to the scaled operand.
The conversion of an operand into its stochastic representation is carried out by comparing the operand to a sequence of random numbers that also lie in the range between 0 and 1. Whenever the operand exceeds the random number, a 1 value is inserted into the output sequence. When the operand is less than the random number, a 0 value is inserted into the output sequence.
An important advantage of stochastic processing is that some primitive data processing operations (e.g., multiplication and addition) can be performed with extremely simple hardware, often with a single logic gate. The disadvantage of stochastic processing is that relatively long processing times are required, since the stochastic representations are generated and processed in serial form.
The initial approach to stochastic processing relied on natural random noise, such as a signal from a noisy diode, to produce the random number sequences. However, it was generally found that excessive time intervals were required in order to obtain a stochastic representation that was true to the value of the operand. Furthermore, with a truly random sequence, the representation of an operand varies from one encoding to the next, precisely because the noise is truly random. The correspondence between an operand and its stochastic representation is best when the noise is uniformly distributed, which is not true of natural random noise, particularly in a finite time sample. Further, for an operation such as multiplication that requires two input operands, the two random number sequences must be independent for accurate results. However, the independence requirement cannot be guaranteed for natural noise.
For the above reasons, it has generally been found that for representations of moderate length, stochastic processing using natural random noise performs inconsistently and inaccurately. Furthermore, it is not possible to use random stochastic processing to perform many useful data processing operations, such as finding the maximum of two input operands. For this reason, stochastic processing using random noise sources has not developed any practical applications.
More recently, various investigations have been made into the use of pseudorandom noise in stochastic processing. A pseudorandom number sequence has approximately the same statistics as a random sequence, but is deterministic. The use of pseudorandom sequences has significantly increased the accuracy of stochastic multiplication. However, in prior techniques of this type, the multiplication has incompatible front and back ends, i.e., two four-bit operands have an eight-bit product. Furthermore, the available primitive data processing operations have been limited to multiplication, weighted addition, and complement.